package cn.tedu.spring.life;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Bean对象的生命周期演示
 */
@Component
public class Life {
    private String name;

    /**
     * 第1步：实例化,Spring IoC容器会调用无参构造方法进行Bean对象的实例化,为其分配空间和资源
     */
    public Life() {
        System.out.println("1:调用无参构造进行实例化");
    }

    /**
     * 第2步：Spring IoC容器会调用setter()方法进行属性值的注入
     */
    @Value("生命")
    public void setName(String name) {
        this.name = name;
        System.out.println("2:调用setter()方法依赖注入");
    }

    /**
     * 第3步：Spring IoC容器在对Bean对象初始化时,执行Bean对象初始化方法
     */
    @PostConstruct
    public void init(){
        System.out.println("3:执行Bean对象初始化方法");
    }

    /**
     * 第5步：Spring IoC容器在对Bean对象销毁之前,执行Bean对象销毁方法
     */
    @PreDestroy
    public void destroy(){
        System.out.println("5:执行Bean对象的销毁方法");
    }
}









